package com.ruoyi.common.utils;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.HashMap;
import java.util.Map;

public class TranslateUtils {

    /**
     *
     * @param clientNumbr
     * @return
     */
    public static String trsLang(String clientNumbr) {
        try {
            // 使用Jackson或Gson解析JSON
            ObjectMapper mapper = new ObjectMapper();
            String json = trsLangjson();
            Map<String, String> countryCodeMap = mapper.readValue(json, new TypeReference<HashMap<String, String>>() {
            });

            // 找到最长匹配的国家代码
            String matchedCode = "";
            for (String code : countryCodeMap.keySet()) {
                if (clientNumbr.startsWith(code) && code.length() > matchedCode.length()) {
                    matchedCode = code;
                }
            }

            // 如果找到匹配的代码，返回对应的语言代码
            if (!matchedCode.isEmpty()) {
                return countryCodeMap.get(matchedCode);
            }

            // 如果没有找到匹配，返回默认语言代码
            return "en";

        } catch (Exception e) {
            // 处理异常情况
            e.printStackTrace();
            return "en";
        }
    }
    public static String trsLangjson() {
        return "{"
                // 欧洲
                + "\"49\":\"de\","    // 德国
                + "\"43\":\"de\","    // 奥地利
                + "\"41\":\"de\","    // 瑞士
                + "\"33\":\"fr\","    // 法国
                + "\"34\":\"es\","    // 西班牙
                + "\"39\":\"it\","    // 意大利
                + "\"31\":\"nl\","    // 荷兰
                + "\"32\":\"nl\","    // 比利时
                + "\"48\":\"pl\","    // 波兰
                + "\"351\":\"pt-pt\"," // 葡萄牙（改为具体的欧洲葡萄牙语）
                + "\"7\":\"ru\","     // 俄罗斯
                + "\"380\":\"uk\","   // 乌克兰
                + "\"46\":\"sv\","    // 瑞典
                + "\"45\":\"da\","    // 丹麦
                + "\"358\":\"fi\","   // 芬兰
                + "\"30\":\"el\","    // 希腊
                + "\"36\":\"hu\","    // 匈牙利
                + "\"420\":\"cs\","   // 捷克
                + "\"421\":\"sk\","   // 斯洛伐克
                + "\"386\":\"sl\","   // 斯洛文尼亚
                + "\"359\":\"bg\","   // 保加利亚
                + "\"40\":\"ro\","    // 罗马尼亚
                + "\"372\":\"et\","   // 爱沙尼亚
                + "\"371\":\"lv\","   // 拉脱维亚
                + "\"370\":\"lt\","   // 立陶宛
                + "\"90\":\"tr\","    // 土耳其
                + "\"47\":\"nb\","    // 挪威（新增）

                // 亚洲
                + "\"86\":\"zh-hans\","  // 中国（改为简体中文）
                + "\"852\":\"zh-hant\"," // 香港（改为繁体中文）
                + "\"853\":\"zh-hant\"," // 澳门（改为繁体中文）
                + "\"886\":\"zh-hant\"," // 台湾（改为繁体中文）
                + "\"81\":\"ja\","    // 日本
                + "\"62\":\"id\","    // 印度尼西亚
                + "\"82\":\"ko\","    // 韩国（改为韩语）

                // 美洲
                + "\"55\":\"pt-br\","    // 巴西（改为巴西葡萄牙语）
                + "\"54\":\"es\","    // 阿根廷
                + "\"52\":\"es\","    // 墨西哥
                + "\"56\":\"es\","    // 智利
                + "\"57\":\"es\","    // 哥伦比亚
                + "\"51\":\"es\","    // 秘鲁
                + "\"58\":\"es\","    // 委内瑞拉
                + "\"593\":\"es\","   // 厄瓜多尔
                + "\"595\":\"es\","   // 巴拉圭
                + "\"598\":\"es\","   // 乌拉圭
                + "\"502\":\"es\","   // 危地马拉
                + "\"503\":\"es\","   // 萨尔瓦多
                + "\"504\":\"es\","   // 洪都拉斯
                + "\"505\":\"es\","   // 尼加拉瓜
                + "\"506\":\"es\","   // 哥斯达黎加
                + "\"507\":\"es\","   // 巴拿马
                + "\"591\":\"es\","   // 玻利维亚
                + "\"1\":\"en-us\","  // 美国和加拿大（改为美式英语）

                // 阿拉伯语国家
                + "\"966\":\"ar\","   // 沙特阿拉伯（改为阿拉伯语）
                + "\"20\":\"ar\","    // 埃及（改为阿拉伯语）
                + "\"971\":\"ar\","   // 阿联酋（改为阿拉伯语）
                + "\"962\":\"ar\","   // 约旦（改为阿拉伯语）
                + "\"961\":\"ar\","   // 黎巴嫩（改为阿拉伯语）
                + "\"963\":\"ar\","   // 叙利亚（改为阿拉伯语）
                + "\"964\":\"ar\","   // 伊拉克（改为阿拉伯语）
                + "\"965\":\"ar\","   // 科威特（改为阿拉伯语）
                + "\"968\":\"ar\","   // 阿曼（改为阿拉伯语）
                + "\"973\":\"ar\","   // 巴林（改为阿拉伯语）
                + "\"974\":\"ar\","   // 卡塔尔（改为阿拉伯语）

                // 其他不支持的国家映射到英语
                + "\"91\":\"en-gb\","    // 印度（改为英式英语）
                + "\"92\":\"en-gb\","    // 巴基斯坦
                + "\"27\":\"en-gb\","    // 南非
                + "\"234\":\"en-gb\","   // 尼日利亚
                + "\"61\":\"en-gb\","    // 澳大利亚
                + "\"64\":\"en-gb\","    // 新西兰
                + "\"84\":\"en-gb\","    // 越南
                + "\"66\":\"en-gb\","    // 泰国
                + "\"65\":\"en-gb\","    // 新加坡
                + "\"60\":\"en-gb\","    // 马来西亚
                + "\"63\":\"en-gb\","    // 菲律宾
                + "\"98\":\"en-gb\","    // 伊朗
                + "\"972\":\"en-gb\","   // 以色列
                + "\"994\":\"en-gb\","   // 阿塞拜疆
                + "\"995\":\"en-gb\","   // 格鲁吉亚
                + "\"998\":\"en-gb\""    // 乌兹别克斯坦
                + "}";
    }

    public static void main(String[] args) {
        System.out.println(trsLang("85245645"));
        System.out.println(trsLang("60245645"));
        System.out.println(trsLang("86245645"));
        System.out.println(trsLang("55245645"));
    }



}
